package com.ruifu.common.vo.actanddoc;

import com.ruifu.common.eneity.TaskAssigneeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;

/**
 * @author lcq
 * @date 2019/10/10 9:49
 */
@Data
@ApiModel(value = "流程定义参数实体", description = "流程定义的入参类")
public class ProcessParams implements Serializable {
    /**
     * 任务id
     */
    @ApiModelProperty(example = "123321")
    private String taskId;
    /**
     * 提交人
     */
    @ApiModelProperty(example = "322")
    private String submitDocumentPerson;
    /**
     * 下级审核人
     */
    @ApiModelProperty(example = "233")
    private String auditor;
    /**
     * 文档版本
     */
    @ApiModelProperty(example = "23-doc")
    private String dvDvId;
    /**
     * 通过驳回标志("N"驳回  "Y"通过)
     */
    @ApiModelProperty(example = "Y")
    private String mark;
    /**
     * 审核意见
     */
    @ApiModelProperty(example = "通过")
    private String auditOpinion;
    /**
     * 是否是重新提交
     */
    private Long isRewriting;
    /**
     * 文档类型绑定的key
     */
    @ApiModelProperty(example = "220004")
    private String dcWorkFlowId;

    private TaskAssigneeEnum assigneeType;

    /**
     * true 已审核  false待审核
     */
    @ApiModelProperty(example = "true")
    private Boolean isAudit;
    /**
     * 类别
     */
    private String category;

    public void setAssigneeType(String assigneeType) {

        if(null != assigneeType && !"".equals(assigneeType)) {
            this.assigneeType = Enum.valueOf(TaskAssigneeEnum.class,assigneeType);
        } else {
            this.assigneeType = null;
        }

    }

    public void setAssigneeType(TaskAssigneeEnum assigneeType) {
        this.assigneeType = assigneeType;
    }

    /**
     * 根据不同的获取类型，来返回对应的TaskAssignee，任务委派人标签。
     * 当前有的类型
     * USER：具体的人
     * ROLE：角色
     * GROUP：项目组织
     *
     * @return
     */
    public String getAuditor() {
        if(null != this.assigneeType) {
            return this.assigneeType.getType() + "-" + this.auditor;
        } else {
            return this.auditor;
        }
    }
}
